package net.hn.hnms.sys.system.controller.feign;

import lombok.RequiredArgsConstructor;
import net.hn.hnms.sys.system.api.domain.SysUser;
import net.hn.hnms.sys.system.api.model.LoginUser;
import net.hn.hnms.sys.system.api.model.UserVo;
import net.hn.hnms.sys.system.api.model.XcxLoginUser;
import net.hn.hnms.sys.system.remote.RemoteUserServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore;

import java.util.Collection;
import java.util.List;

/**
 * Author: PanSX
 * Date: 2022/7/11 16:19
 */
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/remoteUser")
@ApiIgnore
public class RemoteUserController {
    @Autowired
    RemoteUserServiceImpl remoteUserService;

    /**
     * 通过用户名查询用户信息
     *
     * @param username 用户名
     * @return 结果
     */
    @GetMapping(value = "/getUserInfo")
//    @SaCheckLogin
    public LoginUser getUserInfo(@RequestParam("username") String username) {
        return remoteUserService.getUserInfo(username);
    }
    /**
     * 通过手机号查询用户信息
     *
     * @param phonenumber 手机号
     * @return 结果
     */
    @GetMapping(value = "/getUserInfoByPhonenumber")
//    @SaCheckLogin
    public LoginUser getUserInfoByPhonenumber(@RequestParam("phonenumber")  String phonenumber){
        return remoteUserService.getUserInfoByPhonenumber(phonenumber);
    }
    /**
     * 通过openid查询用户信息
     *
     * @param openid openid
     * @return 结果
     */
    @GetMapping(value = "/getUserInfoByOpenid")
//    @SaCheckLogin
    public XcxLoginUser getUserInfoByOpenid(@RequestParam("openid") String openid) {
        return remoteUserService.getUserInfoByOpenid(openid);
    }
    /**
     * 注册用户信息
     *
     * @param sysUser 用户信息
     * @return 结果
     */
    @PostMapping (value = "/registerUserInfo")
//    @SaCheckLogin
    public Boolean registerUserInfo(@RequestBody SysUser sysUser){
        return remoteUserService.registerUserInfo(sysUser);
    }


    /**
     * 通过用户名id查询用户信息
     *
     * @param id 用户名id
     * @return 结果
     */
    @GetMapping(value = "/getUserInfoById")
//    @SaCheckLogin
    public LoginUser getUserInfoById(@RequestParam("id") Long id) {
        return remoteUserService.getUserInfoById(id);
    }

    /**
     * 通过用户名id查询Sys用户信息
     *
     * @param id 用户名id
     * @return 结果 UserVO 用户id，部门id，姓名，邮箱，手机号，
     */
    @GetMapping(value = "/getUserById")
//    @SaCheckLogin
    public UserVo getUserById(@RequestParam("id") Long id) {
        return remoteUserService.getUserById(id);
    }
    /**
     * 通过用户名ids查询Sys用户信息
     *
     * @param idList 用户名id
     * @return 结果 UserVO 用户id，部门id，姓名，邮箱，手机号，
     */
    @GetMapping(value = "/getUserListIds")
//    @SaCheckLogin
    public List<UserVo> getUserListIds(@RequestParam("idList") Collection<Long> idList) {
        return remoteUserService.getUserListIds(idList);
    }
    /**
     * 获取排除Ids的用户列表
     *
     * @param idList 用户名id
     * @return 结果 UserVO 用户id，部门id，姓名，邮箱，手机号，
     */
    @GetMapping(value = "/getUserListExcludeIds")
//    @SaCheckLogin
    public List<UserVo> getUserListExcludeIds(@RequestParam("idList") Collection<Long> idList) {
        return remoteUserService.getUserListExcludeIds(idList);
    }
    /**
     * 获取所有用户信息
     *
     * @return 结果 UserVO 用户id，部门id，姓名，邮箱，手机号，
     */
    @GetMapping(value = "/getUserAllList")
//    @SaCheckLogin
    public List<UserVo> getUserAllList() {
        return remoteUserService.getUserAllList();
    }


    /**
     * 通过用户id集合查询用户信息
     *
     * @param idList 用户集合
     * @return 结果
     */
    @GetMapping(value = "/getUserListByIdList")
//    @SaCheckLogin
    public List<LoginUser> getUserListByIdList(@RequestParam("idList") Collection<Long> idList) {
        return remoteUserService.getUserListByIdList(idList);
    }


    /**
     * 通过用户id查询用户信息
     *
     * @param username 用户名称
     * @return 结果
     */
    @GetMapping(value = "/getUserListByUserName")
//    @SaCheckLogin
    public List<LoginUser> getUserListByUserName(@RequestParam("username") String username) {
        return remoteUserService.getUserListByUserName(username);
    }

    /**
     * 通过用户中文查询用户信息集合
     *
     * @param username 用户中文名称
     * @return 结果
     */
    @GetMapping(value = "/getUserListByChUserName")
//    @SaCheckLogin
    public List<LoginUser> getUserListByChUserName(@RequestParam("username") String username) {
        return remoteUserService.getUserListByChUserName(username);
    }

    @GetMapping(value = "/getUserListByIdCardList")
//    @SaCheckLogin
    public List<String> getUserListByIdCardList(@RequestBody Collection<String> idCardList) {
        return remoteUserService.getUserListByIdCardList(idCardList);
    }
    @GetMapping(value = "/getUserListByDept")
//    @SaCheckLogin
    public List<String> getUserListByDept(@RequestParam Collection<Long> depts) {
        return remoteUserService.getUserListByDept(depts);
    }

}
